package nsu.edu.zsq.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import nsu.edu.zsq.bean.StuCourse;
import nsu.edu.zsq.bean.StuCourseExample;

public interface StuCourseMapper {
    /**
     *
     */
    long countByExample(StuCourseExample example);

    /**
     *
     */
    int deleteByExample(StuCourseExample example);

    /**
     *
     */
    int deleteByPrimaryKey(Integer id);

    /**
     *
     */
    int insert(StuCourse record);

    /**
     *
     */
    int insertSelective(StuCourse record);

    /**
     *
     */
    List<StuCourse> selectByExample(StuCourseExample example);

    /**
     *
     */
    StuCourse selectByPrimaryKey(Integer id);

    /**
     *
     */
    int updateByExampleSelective(@Param("record") StuCourse record, @Param("example") StuCourseExample example);

    /**
     *
     */
    int updateByExample(@Param("record") StuCourse record, @Param("example") StuCourseExample example);

    /**
     *
     */
    int updateByPrimaryKeySelective(StuCourse record);

    /**
     *
     */
    int updateByPrimaryKey(StuCourse record);
    
    /**
     * 查询班级的课程数量
     * @return List<Map<String, Integer>>
     */
    List<Map<String, Integer>> countCourseByClass();

    /**
     * 根据班级id，查找该班级的所有教师课程（使用内连接）
     * @param classId 班级id
     * @return List<StuCourse>
     */
    List<StuCourse> listClassCourse(@Param("classId")int classId);
    
    /**
     * 根据学生课程id获取一条课程信息
     * @param id 课程id
     * @return StuCourse
     */
    StuCourse getStuCourseByPrimaryKey(@Param("id")int id);

    /**
     * 通过专业代码查询专业授课课程
     * @param majorNo 专业代码
     * @return List<HashMap<String, String>> key:course_no course_name major_name
     */
    List<HashMap<String, String>> listStuCourseByMajorNo(String majorNo);

    /**
     * 通过学号，获取该学生的所有选修课程
     * @param stuNo 学号
     * @return List<StuCourse>
     */
    List<HashMap<String, String>> listStuChooseCourse(String stuNo);

}